package org.example.study2;
// 不是sleep状态中断⼀个线程，方法：调⽤interrupt()⽅法来通知
public class Demo_208 {
    public static void main(String[] args) throws InterruptedException {
        Thread thread = new Thread(() -> {
            // 通过线程对象内部维护的中断标识，判断当前线程是否需要中断
            while (!Thread.currentThread().isInterrupted()) {
                // 线程中具体的任务是打印一句话
                System.out.println(Thread.currentThread().getName()
                        + ": 转账处理中...");
            }
            System.out.println(Thread.currentThread().getName()
                    + ": 转账已终止");
        },"张三");

        // 启动线程前检查存活状态false
        System.out.println("线程是否存活：" + thread.isAlive());
        System.out.println("主线程: 启动张三转账");
        // 启动线程
        thread.start();
        // 主线程休眠 1 秒，让子线程运行一段时间
        Thread.sleep(1000);
        // 中断前检查线程存活状态true
        System.out.println("线程是否存活：" + thread.isAlive());
        System.out.println("主线程: 紧急通知！对方是骗子，停止转账！");
        // 中断线程，发出中断信号
        thread.interrupt();
        // 等待线程销毁
        thread.join();
        // 中断后查看是否存活false
        System.out.println("线程是否存活：" + thread.isAlive());
    }
}
